package com.lsc.jdbc.demo.unit.junit.paramter;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/**
 * junit  实现参数化的步骤
 * （在使用参数化的时候  参数的类型 尽量使用 String 包装类）
 * 1. 将 固定的值 改为参数列表
 * 2. 整理数据源
 * 1. 数据源的方法的返回值一定是 二维数组
 * 3. 想要将数据源中数据传递给测试方法 需要使用 类变量 构造方法
 * 4. 将类的运行方式 修改为 迭代运行
 */
@RunWith(Parameterized.class)
public class CalcAddTest {

    int a;
    int b;
    int exp;

    /* 构造方法的快捷键 */

    public CalcAddTest(String a, String b,String exp) {
        this.a = Integer.parseInt(a);
        this.b = Integer.parseInt(b);
        this.exp = Integer.parseInt(exp);
    }

    @Test
    public void t() {
        CalcAdd calcAdd = new CalcAdd();
        int add = calcAdd.add(a, b);
        System.out.println(add);

        /* 断言 Assert */
        /* 使用 断言来判断 结果 和 预期值 是否相等  如果相等 就是通过的  ，如果不相等就是失败的 */
        Assert.assertEquals(exp, add);
    }

    @Parameters
    public static String[][] dp() {
        return new String[][]{
                new String[]{"1", "2", "3"},
                new String[]{"2", "2", "3"},
                new String[]{"3", "2", "5"},
                new String[]{"4", "2", "6"}
        };
    }


}

